"""
1）添加和删除元素:与字典类似，Python也提供了多种函数和方法用于集合元素的添加和删除
函数和方法	    说 明
S.add(x)	    如果x不在集合S中，将x添加到S中
S.update(T)	    合并集合T的元素到当前集合S中，并自动去除重复元素
S.pop()	        随机删除并返回集合中的一个元素，如果集合为空则抛出异常
S.remove(x)	    如果x在集合S中，则删除该元素；否则抛出异常
S.discard(x)	如果x在集合S中，则删除该元素；如果x不存在也不报错
S.clear()	    清空集合
"""
s = {1, 2, 3}					#创建集合并赋值
s.add(4)						#添加元素
print(s)						#输出集合，结果为{1, 2, 3, 4}
s.update({4, 5, 6})				 #更新当前集合，自动去除重复元素
print(s)						#输出集合，结果为{1, 2, 3, 4, 5, 6}
s.discard(5)					#删除元素，不存在则忽略该操作
print(s)						#输出集合，结果为{1, 2, 3, 4, 6}
s.remove(3)					#删除元素，不存在则抛出异常
print(s)						#输出集合，结果为{1, 2, 4, 6}
s.pop()						#删除并返回一个元素，返回值为1
print(s)						#输出集合，结果为{2, 4, 6}

"""
2）集合运算
内置函数len()、max()、min()、sorted()等也适用于集合，此外，Python中集合还支持数学意义上的交集、并集、差集、补集等运算，具体操作符如表4-6所示。
操作符	说 明
S&T	    交集，返回一个新集合，包含同时在集合S和T中的元素
S|T	    并集，返回一个新集合，包含集合S和T中的所有元素
S− T	差集，返回一个新集合，包含在集合S中但不在集合T中的元素     
S^T	    补集，返回一个新集合，包含集合S和T中的元素，但不包含同时在集合S和T中的元素
S<=T	如果S与T相同或S是T的子集，返回True，否则返回False，可以使用S<T判断S是否是T的真子集
S>=T	如果S与T相同或S是T的超集，返回True，否则返回False，可以使用S>T判断S是否是T的真超集
"""
a = {1, 2, 3, 4, 5}		                           #创建集合并赋值
b = {1, 2, 6, 7, 8}		                           #创建集合并赋值
print(a & b)				#输出交集，结果为{1, 2}
print(a | b)				#输出并集，结果为{1, 2, 3, 4, 5, 6, 7, 8}
print(a - b)				#输出差集，结果为{3, 4, 5}  属于集合A但不属于集合B的所有元素组成的集合
print(a ^ b)				#输出补集，结果为{3, 4, 5, 6, 7, 8}  包含集合S和T中的元素，但不包含同时在集合S和T中的元素
x = {1, 2, 3}			             #创建集合并赋值
y = {2, 3}				#创建集合并赋值
z = {1, 2, 4}			             #创建集合并赋值
print(x >= y)			             #判断x是否为y的超集并输出，结果为True
print(x <= z)			             #判断x是否为z的子集并输出，结果为False